class RestUtils(object):
    """ Utility class for API """

    def processRequest(self,request):

        # get our verb  
        request_method = request.method.lower()
        return_obj     = RestRequest()
        # we'll store our data here  
        ###############$data           = array();  
  
        if request_method=='get':
                data = request.GET

        # Currently no PUT and DELETE are used on our API

  
        # store the method  
        return_obj.setMethod(request_method)
        # set the raw data, so we can access it if needed
        return_obj.setRequestVars(data)
        
        if (data.get('stockname')):
            # translate the JSON to an Object
            return_obj.setData(data.get('stockname'))

        return return_obj
  
    def sendResponse(self, status = 200, body = '', content_type = 'text/html',response=''):
        
        #status_header = 'HTTP/1.1 %d %s' % (status, RestUtils.getStatusCodeMessage(status))
        #header(status_header);  
        
        response.set_status(status)
        response.headers['Content-Type'] = 'content_type'
  
        # pages with body are easy  
        if body != '':
            response.out.write(body)
        # we need to create the body if none is passed  
        else  :
            # create some body messages  
            response.out.write('')

        return response

        # Currently do not provide clean error msg
        """// this is purely optional, but makes the pages a little nicer to read  
        // for your users.  Since you won't likely send a lot of different status codes,  
        // this also shouldn't be too ponderous to maintain  
        switch($status)  
        {  
            case 401:  
                $message = 'You must be authorized to view this page.';  
                break;  
            case 404:  
                $message = 'The requested URL ' . $_SERVER['REQUEST_URI'] . ' was not found.';  
                break;  
            case 500:  
                $message = 'The server encountered an error processing your request.';  
                break;  
            case 501:  
                $message = 'The requested method is not implemented.';  
                break;  
        }  
  
        // servers don't always have a signature turned on (this is an apache directive "ServerSignature On")  
        $signature = ($_SERVER['SERVER_SIGNATURE'] == '') ? $_SERVER['SERVER_SOFTWARE'] . ' Server at ' . $_SERVER['SERVER_NAME'] . ' Port ' . $_SERVER['SERVER_PORT'] : $_SERVER['SERVER_SIGNATURE'];  
  
        // this should be templatized in a real-world solution  
        $body = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
                    <html>  
                        <head>  
                            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
                            <title>' . $status . ' ' . RestUtils::getStatusCodeMessage($status) . '</title>  
                        </head>  
                        <body>  
                            <h1>' . RestUtils::getStatusCodeMessage($status) . '</h1>  
                            <p>' . $message . '</p>  
                            <hr />  
                            <address>' . $signature . '</address>  
                        </body>  
                    </html>';  
  
        echo $body;  
        exit;  """

  
class RestRequest (object):
  
    def __init__(self):
        self.data              = ''
        self.http_accept       = 'json'
        self.method            = 'get'
  
    def setData(self,data):
        self.data = data
  
    def setMethod(self, method):
        self.method = method
  
    def setRequestVars(self, request_vars):
        self.request_vars = request_vars
  
    def getData(self):
        return self.data
  
    def getMethod(self):
        return self.method
  
    def getHttpAccept(self):
        return self.http_accept
  
    def getRequestVars(self):
        return self.request_vars